package content

import (
	"context"
	contentModel "github.com/flipped-aurora/gin-vue-admin/server/model/content"
	"github.com/flipped-aurora/gin-vue-admin/server/service/system"
	"gorm.io/gorm"
)

const initOrderContent = system.InitOrderExternal + 1

type initContent struct{}

// auto run
func init() {
	system.RegisterInit(initOrderContent, &initContent{})
}

func (i *initContent) InitializerName() string {
	return contentModel.Content{}.TableName()
}

func (i *initContent) MigrateTable(ctx context.Context) (context.Context, error) {
	db, ok := ctx.Value("db").(*gorm.DB)
	if !ok {
		return ctx, system.ErrMissingDBContext
	}
	return ctx, db.AutoMigrate(&contentModel.Content{})
}

func (i *initContent) TableCreated(ctx context.Context) bool {
	db, ok := ctx.Value("db").(*gorm.DB)
	if !ok {
		return false
	}
	return db.Migrator().HasTable(&contentModel.Content{})
}

func (i *initContent) InitializeData(ctx context.Context) (next context.Context, err error) {
	// Content 表不需要初始化基础数据
	return ctx, nil
}

func (i *initContent) DataInserted(ctx context.Context) bool {
	// Content 表不需要初始化基础数据
	return true
}
